﻿using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Content;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Project.Core;
namespace TLS
{
    public class Disparo : Sprite
    {
        private Animacion animGeneral;
        private Game1 game;
        public enum Direcciones { IZQUIERDA, DERECHA };
        public Direcciones direccion { get; set; }
        public int puntos { get; set; }
        Kaled objKaled;

        private float velocidad;

        public Disparo(Game1 game)
            : base(null)
        {
            this.game = game;
            objKaled = this.game.objKaled;
            animGeneral = new Animacion();
            animGeneral.agregarFrame(game.Content.Load<Texture2D>("disparo"), 100);

            this.direccion = Direcciones.DERECHA;
            base.animacion = animGeneral;
            this.velocidad = 0.74f;
            this.puntos = 0;
        }

        public override void actualizar(long tiempo)
        {
            switch (direccion)
            {
                case Direcciones.DERECHA:
                    base.animacion = animGeneral;
                    velocidadX = velocidad;
                    break;
                case Direcciones.IZQUIERDA:
                    base.animacion = animGeneral;
                    velocidadX = -velocidad;
                    break;
            }
            base.actualizar(tiempo);
        }

        public override void evento_ColisionHorizontalTile()
        {
            escenarioActual.sprites.Remove(this);
        }

        public override void evento_ColisionHorizontalSprite(Sprite objSprite)
        {
            if (objSprite is Caminante)
            {
                Caminante objCaminante = (Caminante)objSprite;
                if (objCaminante.vida > 0)
                {
                    objCaminante.vida--;
                    escenarioActual.sprites.Remove(this);
                }
                if (objCaminante.vida == 0)
                {
                    objKaled.puntos += 10;
                    if (objKaled.puntos > 90)
                    {
                        objKaled.vida++;
                        objKaled.puntos -= 100;
                    }
                    this.escenarioActual.sprites.Remove(objSprite);
                    escenarioActual.sprites.Remove(this);
                    //cargarMapa();
                }
            }
            else if (objSprite is Boss1)
            {
                Boss1 objBoss1 = (Boss1)objSprite;
                if (objBoss1.vida > 0)
                {
                    objBoss1.vida--;
                    escenarioActual.sprites.Remove(this);
                    objBoss1.disparar();//ataca
                }
                if (objBoss1.vida == 0)
                {
                    objKaled.vida += 5;//equivale a 500 ptos
                    this.escenarioActual.sprites.Remove(objSprite);
                    //Esto borra a la bala del mapa
                    escenarioActual.sprites.Remove(this);
                    cargarMapa();

                }
            }
            else if (objSprite is Boss2)
            {
                Boss2 objBoss2 = (Boss2)objSprite;
                if (objBoss2.vida > 0)
                {
                    objBoss2.vida--;
                    escenarioActual.sprites.Remove(this);
                    //objBoss2.disparar();//ataca
                }

                if(objBoss2.vida == 0)
                {
                    objKaled.vida += 8;//equivale a 800 puntos
                    this.escenarioActual.sprites.Remove(objSprite);
                    escenarioActual.sprites.Remove(this);
                }
            }
        }

        public void cargarMapa()
        {
            Texture2D fondo = game.Content.Load<Texture2D>("fondos/bg-2");
            //objKaled = new Kaled(game);
            game.escenario = new TileMap(game, "Content/mapa_fin.csv", game.objKaled, 3, 25);         
            game.escenario.spriteFactory = new SpriteFactory(game);
            game.escenario.ParallaxBackground = fondo;
            game.escenario.regenerarMapa();
            game.escenario.sprites.Add(objKaled.objArma);
        }
    }
}
